プ ログラミングやRPG(作るほう)が好きな人の日記
個人的な趣味(プログラミング、イラスト、電子回路)のページです。 日記を中心に、パソコン関係について、いろいろ細かく説明することがあります。 読んでいるときに、言葉の左下に 水色の・を発見したら、 そこにマウスカーソルを合わせたり、タッチすると、言葉の意味を表示します。 |
48才、男、B型
電子機器を製造する工場で、派遣で働いています。
プログラミングが好きで小学校5年生のころからずっと続けています。
■趣味: プログラミング、ゲーム音楽を集めて聴く、イラストを描く、映画、アニメ、ガンプラ (興味の強い順)
■将来の夢は5つくらい持っていますが、生きてる間に実現できそうにありません。
■私が使っているペンネーム(ハンドルネーム)は新しい順に
ペ ンネーム(ハンドルネーム) | いつごろ | 場 所 |
---|---|---|
sankakkei、三角形 | 現在(多) | Yahoo Japan |
d_kawakawa | 現在(少) | どこでも |
cookiepurinman、cookiepudingman、cookiepuddingman | 現在(極少) | |
かわ、kawa | 30年前 | パソコン通信 |
■私への連絡手段:
ごくまれにしかツイートしませんが、私の twitter アカウントはこちらです。
https://twitter.com/cookiepudingman
何かメッセージをくれれば、返事すると思います。
返事がないときはメッセージに気付いていないんだと思います。そのときはすみません。
■管理人用:
… 国家検定の電子機器組立て2級の 暗記ツール(基板上配置)です。1級でも役立つと思います。
このサイトで最も興味を引く部分: (そのつもり)
最近、私は個人的に、「RPG のコマンドメニュー部分のプログラム」を、中高生向けに、ステップバイステップ方式で教えようとしています。
ステップ同士のプログラム上の変化をマーキングして表示したり、バルーンメッセージを使って説明を付けたりと、いろいろ工夫をしていますが、はっきり いってわかりにくいんじゃないかと思っています。
RPGメニューを作る1 基本のプログラムからはじめて、サブメニューを表示するまで Step 1~8 |
RPGメニューを作る2(記事としては4) メニューの項目に、付加情報(装備中のe記号や、店の価格)を表示。 Step 9、10、11 |
RPGメニューを作る3(記事としては5) メニューの項目を段組表示する Step 12、13 |
3DCG の「サブディビジョン・サーフェス」のうちの一つ、「ドゥ・サビン」について、最近プログラムを作っています。
もともとは、Yahoo知恵袋で、
質問者さん「アニメや ゲームのひもや触手の様なものが自由自在に伸びてうねる3Dモデルの動 きは、どうやって作っているのでしょうか?」
という質問があって、
私「サブディビジョン サーフェスを行うんですよ」
と回答したんですが、
質問者さん「それだと 1コマを滑らかにしているだけで、動き(モーション)はどうやるんです か?」
と聞かれ、
私「アニメの1コマご とにサブディビジョンサーフェスを適用するんですよ」
と答えましたが、文字で説明するだけでは、具体的にはわからないと思って、サンプルを作り始めたのが最初でした。
もともと私は「ドゥ・サビン」の方法を説明しているページのブックマークを持っていて、なんとなくできそうだなとは思っ ていたので、実現するのはそんなには難 しくはありませんでした。しかし…
▼「ドゥ・サビン」無しの状態。こういうアニメはいつもやっていたので、難しくはないんです。
▼「ドゥ・サビン」1回適用
「ドゥ・サビン」のおおまかなプログラムはそんなには難しくありませんでした。
でもこの図の青いポリゴンは、最初は一部リボン みたいにねじれて いる状態で、それを直すのに、3日くらいずっと試行錯誤していました。
上図のように青いポリゴンがひとつもねじれていない状態は、この文章を書いているちょっと前にやっと完成したところでした。
しかし!
▼「ドゥ・サビン」2回適用
残念なことに2回適用以降は青いポリゴンがリボン状になっています。
どうやって直せるのか頑張って考えたのに、また考え直さなきゃいけない、、今現在そういう状態にいます。
3DCG のプログラミングをやっていると、当たり前になるんですが、数学の「内積」とか「法線」とかあれこれの手段を使ってパズルのように問題を解決するんです。どうやって直せば いいんだろうか。
もともと数学は好きなんですが、それは中学校数学まででした。でも 3DCG のプログラミングというのはどうしても「内積」とか高校数学が必要になります。実現したいことを実現させるために、いつか当たり前のように「内積」を使うようになります。
3DCG プログラミングでは、基本的には中学校数学の「三角形の相似」の問題で 3 次元の景観を画面へ描くことができます。
▼
「三角形の相似」の問題で… |
▼3
次元の景観を画面へ描く |
これをプログラムで書くと以下のような感じです。
h = x * ( s / z );
v = y * ( s / z );
// ※ x, y, z は3次元空間のある点の座標で、 s は基本的に 50 で固定です。h, v は画面上の座標です。
それ(3次元空間内の点)を回転させたい場合は高校数学の「三角関数」の問題で 回転できます。
// 「三次元空間内のある点 x, y, z を、x-y 平面において45度回転させる」
kakudo1 = atan2( y, x ); // 回転前の座標のグラフ上の角度。atan2 はゲームではよく使われる。
kakudo2 = 45 * ( 3.1415 / 180 ); // "45度 回転させたい"
hankei = sqrt( x * x + y * y ); // 円の半径を 三平方の定理で。
kaiten_x = cos( kakudo1 + kakudo2 ) * hankei;
kaiten_y = sin( kakudo1 + kakudo2 ) * hankei; // x-y 平面で回転するので、z は使われない。
// ※これは正面から見て時計が回る方向に回転します。他の方向は x-z、z-y
平面で同様の計算をします。
そして、今回のようにもっと特殊なことを行いたい場合は、「内積」や「外積」という計算をたくさん使います。でも式は四則演算で す。
// 「3次元空間内の点 x, y, z と点 a, b, c の内積」
naiseki = x * a + y * b + z * c; // x, y, z と、 a, b, c は成す線の長さが1であること(正規化)
// 「3次元空間内の点 x, y, z と点 a, b, c と点 d, e, f の外積」
gaiseki_x = ( b - y ) * ( f - c ) - ( c - z ) * ( e - b ),
gaiseki_y = ( c - z ) * ( d - a ) - ( a - x ) * ( f - c ),
gaiseki_z = ( a - x ) * ( e - b
) - ( c - y ) * ( d - a ),
このように、「数学」とか、「内積」とか言ったって、基本的にはそんなに難しい話ではなく、意外と手の届く知識をもとに計算されています。
(ただし、実際にやりたいことを実現しようとすると、結構大変です)
緑のポリゴンは、もとのポリゴンが「ドゥ・サビン」により縮小されたポリゴンです。
赤のポリゴンは、その縮小をした際にできた隙間の一つで、もとのモデルの頂点に由来するポリゴンです。
青のポリゴンは、同じく縮小をした際にできた隙間の一つで、こちらは、もとのモデルの2つの頂点(もともとのモデルの辺)に由来する ポリゴンです。
赤も青もそのポリゴンを構成する頂点は4つあり(四角形)、各頂点はそれぞれ別の処理から発生し、1つのポリゴンとして集められたものです。
集められた時点では、頂点に順序がなく、ちゃんとした順序に並び替えないとねじれて しまうんです。
頂点の並び替えは、時計回りになるように並び替えれば OK なんです。
赤は、その由来の頂点を中心に、なんかいろいろやって、なんとか問題なくできました。
青は…、安易な方法ならあるんだけど、それだと冗長な処理になってしまい、エレガントじゃないんです。
エレガントっていうのはプログラムにとって大事なんですよ。適当にプログラムするなら適当にできるんですが、処理速度など効率を考えたほうが良いプログ ラムになるんです。
ブルーリボン! 歴史が変わって人造人間は二人だけではなくセルな んていうサザエさんのアナゴ君の声の人造人間も出てくるとは!
それはレッドリボンだな。
▼「ドゥ・サビン」3回適用
まぁ、プログラムの難しい話は置いといて、こんなふうにサブディビジョンサーフェスが行わ れ、知恵袋の質問者さんが要望していた、てろんと滑らかなシッ ポができたわけで、なかなかいいでしょ。
こういうのがウネっウネっと動くわけです。
▼「ドゥ・サビン」無し |
▼「ドゥ・サビン」2回 |
▼「ドゥ・サビン」3回 |
このあいだパソコンを第2世代 i5 から、第8世代 i5 へ買い替えて、CPU の数が、2個から6個へ増えたんですが、それでも「ドゥ・サビン」3回は処理しきれないみたいで、少し動きが遅くなっています。
天ぷらにしてイカゲソにして食べるとうまいかもしれない。マヨネーズつけて。
良いお年を。
(訪問者のどんなニーズと この記事がつながるか)
12/9(金) の夜に通販で頼んで、明後日 12/11(日)の午前中に届きました。はやっ
それで今日まで 12 日間使ったんですが、パソコンライフが大きく変化しました。
これまでは電源を入れてから3~5分くらいは起動処理がいろいろと動いて、しばらく使えない状態が続いていたんですが、
新しいパソコンでは、5秒。って感じです。ぶったまげました。
CPU の世代が、「サンディーブリッジ」(第2世代)からコーヒーレイク(第 8世代)ですからね。7年のあいだに何があったんだ?!って感じです。
たとえば、「ホームページ作成ツール」(BlueGriffon)の画面は、これまでは、
こんな感じで、ページを横幅いっぱいに表示させるために、右の設定欄を隠したり表示したりを切り替えていましたが、
新しいパソコンでは…
そういうことをしなくても、設定欄を常時表示させることができるようになりました。
これまでは、4コア(物理2個、論理4個)でしたが、
新しいパソコンでは、6コア(物理6コア)になりました。
これまではこんな感じ。(HDD)
新しいパソコンでは…(SSD)
「20倍 界王拳」って感じ。HDD vs SSD ですからねぇ…。
よく今まで古いパソコンでいろいろやっていたなぁ。
でも、新しいパソコンと言っても、中古4万円で購入した第8世代のオールインワンパソコンなので、
今の最先端の第13世代の組み立てパソコンだともっとスゴいんでしょうね。
臨時収入があったので、パソコンを買い替えることにしました。
「HP ProOne 600 G4 All-in-One」(リンクはヒューレットパッカードの製品詳細 ページ)というパソコンで、CPU を Celeron から i5 へカスタマイズしてある製品です(中古)。
私が今現在働いている職場で統一的に採用しているパソコンで、その職場で一目見て注目していました。
私は性能はあまり見ないで、見た目で選びます。
ゲーム機も、人気はプレステなのに「筐体の肌触りが良いから」というそれだけの理由で xbox を買っていました。
とはいえ、さすがにこの機種の標準 CPU の Celeron だときびしいので、i5 にカスタマイズしてあるもの限定で中古を探していました。
旧 PC | 》》 性能アップ内容 》》 | 買い替え PC | |
---|---|---|---|
名称 | acer ASPIRE 3830T(新品 7 万円程度) | --- | HP ProOne 600 G4(中古品 4 万円程度) |
CPU | core i5
2410M 2.3GHz ~ 2.9GHz 2コア 末尾の M の意味: モバイル向け、第5世代以降使われていない |
Cinebench R15 性能比較 436cb → 945cb (性能2倍程度) |
core i5
8500T 2.1GHz ~ 3.5GHz 6コア 末尾の T の意味: 低消費電力版、 ノートパソコンや小型デスクトップに使われる スペック高め |
ディスク | HDD 500GB (WDC WD5000LPVX-22V0TT0 5400RPM) |
SSD で高速化、 500GB アップ |
SSD 512GB、HDD 500GB |
メモリ | 4GB + 2GB | 2GB アップ | 8GB |
画面サイズ | 1366 x 768 | 広くなった | 1920 x 1080 |
GPU | Intel HD Graphics 3000 | --- | Intel UHD Graphics 630 |
発売年 | 2011 年夏(今から11年前) | 7年差 | 2018 年夏(今から4年前) |
備考 | 店頭で新品で購入したので、7年ものあいだ、 我慢して使い続けたことになる。(良く言えば長持ち) |
--- | Windows 10、11 しか使えない。 (Windows 7 などをインストールできない) |
前々から必要だと思っていたんですが、ウェブサイト(ホームページ領域の契約)をもう1個用意 しました。
web6046 にするか web6048 にするか、それとも web6047a にするかで迷いましたが、当たり前の web6048 にしました。
(訪問者のどんなニーズと この記事がつながるか)